The invention is directed to computer systems and computer data connections.
Many different types of application systems can be implemented using a computer system that has a computer data connection such as a network link. One such application system is a messaging system. In a messaging system, messages directed to a user are typically stored in a mailbox that is stored on the computer system. Messaging software provides access to the mailbox to allow the user to read the messages, create replies, and otherwise manipulate the messages. The mailbox is typically made up of one or more portions of one or more computer data files.
From time to time, the user directs the messaging system to move or copy one or more messages from the mailbox to a message store that is accessible via the messaging software. For example, a typical messaging system includes a housekeeping feature that causes old messages to be deleted from a mailbox automatically. To protect important old messages in such a case, the user directs the system to move or copy these old messages from the mailbox to the message store. These old messages are then safe from the housekeeping feature and can be manipulated by the user employing the messaging software.
Like the mailbox, the message store is typically made up of one or more portions of one or more computer data files. In the usual case, the store can be located at any of the system's storage devices, including, e.g., a hard disk, a floppy disk, or a memory array. Alternatively, the store can be located across the computer data connection, which may be a network link, a dialup connection, or a wireless link.
To promote the reliability and the efficiency of the use of the store, the messaging software typically includes various maintenance features that operate automatically without input from the user, i.e., that operate in the background. One such background feature, for example, is compaction, which moves and re-organizes messages in the message store to free up useful space in the store. A background feature such as compaction that involves writing data to the store typically blocks other access to the store during the operation of the feature. Other access is blocked to protect the integrity of the store's messages, e.g., to prevent a message from being read while the message is being moved, which could cause the message to appear garbled. Thus, the user is unable to gain access to messages in the store while such a background feature is in operation.
It is desirable that the background features are minimally intrusive, i.e., that the background features cause only imperceptible delays or other interference with user-directed actions of the messaging software. If, for example, the store is located on a hard disk, the compaction feature tends to be minimally intrusive, because the high-performance nature of the hard disk allows store reorganization to occur and to conclude quickly. The high-performance of a hard disk typically includes a high data transfer rate, i.e., a high throughput, of at least many thousands of bytes per second. Thus, in the case of a hard disk, there is typically no perceptible delay if a compaction operation is in progress when the user directs the software to display one of the store's messages. In such a case, the compaction operation is quickly concluded and the message is displayed immediately.
If, on the other hand, the store is located at a floppy disk, a background feature such as compaction is usually significantly intrusive, because the typical throughput of a floppy disk is low. Thus, in the case of a floppy disk, if a compaction operation is in progress when the user directs the software to display one of the store's messages, the message is not displayed immediately. The user is able to perceive a significant delay due to the operation of the background feature.
A computer data connection such as a network link typically has a working throughput that is closer to that of a hard disk than that of a floppy disk. However, a store located across a computer data connection is also susceptible to perceptible delays from time to time. The delays occur because the connection is susceptible to problems that temporarily reduce the connection's throughput, i.e., the connection's throughput is variable. When, for example, the connection is a network link, one such problem is network traffic. Network traffic can temporarily reduce a connection's throughput to the same level as the throughput of a floppy disk. If a background feature such as compaction is in progress during this temporary reduction, the user is able to perceive significant delays.
In efforts to determine the throughput of a computer data connection, two existing methods have been used. In the first existing method, an operating system ("OS") service is used to measure the throughput at various times. The OS service causes a test string of data of a known size to be transmitted across the connection, measures the time elapsed during the transmission, and divides the known size by the time elapsed to produce a throughput value. This method is typically undesirable for frequent use in detecting temporary reductions in throughput, because the method adds to network traffic and adds delays. In addition, some connections use one or more caches, which can cause errors in the throughput measurement. A cache is a fast-access memory that performs a read-speed enhancement function by storing a copy of a subset, typically a frequently-used or most-recently-used subset, of a store of data. When data in the subset is requested from the store, the cache provides the data instead, because the cache provides faster access to the data than does the store itself. If, when the OS service is used, at least a portion of the test string is delivered from such a cache instead of across the connection, the measured throughput value is in error. The value is in error because the portion delivered from the cache did not travel across the connection. Thus, the part of the elapsed time attributable to the portion is irrelevant to the measurement of the connection's throughput. Typically, the part of the elapsed time attributable to the portion is shorter than the amount of time the portion would have taken had the portion actually travelled across the connection. Therefore, under this method, if a connection uses one or more caches, the measurement of the connection's throughput usually produces a measured throughput value that is higher than the connection's actual throughput.
In the second existing method, such an elapsed time is measured only once, when the software is first loaded and run. Unlike the first method, this method produces no further delays. In addition, this method typically avoids cache-related errors, because the cache usually delivers no portion of the string when the string is first transmitted.
However, because only one measurement is taken, this method provides no means for detecting temporary reductions in throughput.